home *** CD-ROM | disk | FTP | other *** search
- *68HC705C8 REMOTE DISPLAY
- *FOR TS-140 Transceiver, and other Kenwood HF Transceivers
- *VERSION 4.3 (MAR. 12, 1993) (SHORTENED DISLET/WCTRL DELAYS...)
- *Steven N. Bienvenu, NB5F
- *COPYRIGHT 1993; this program may NOT be used for commercial
- *purposes or sale, nor altered without express permission of the
- *author
-
- * Register Equates
-
- PORTA EQU $00 LCD DATA/CONTROL PORTS
- PORTB EQU $01 EQUATES
- DDRA EQU $04
- DDRB EQU $05
-
- BRATE EQU $0D SCI EQUATES
- SCCR1 EQU $0E
- SCCR2 EQU $0F
- SCSR EQU $10
- SCDAT EQU $11
-
- * Ram Equates
-
- TEMPA EQU $51 ONE BYTE TEMPORARY STORAGE
- TEMPX EQU $52 ONE BYTE TEMPORARY STORAGE
- TEMPM EQU $53 " "
- TEMPV EQU $54 " "
- VFO EQU $55 VFO DATA BYTE, TEMP. STRG
-
- * RESERVE RECEIVED DATA MEMORY AREAS
-
- ORG $60
-
- RDATA RMB $28 RESERVES 40 BYTES FOR
- * INPUT DATA
-
- RDATB RMB $D RESERVES 13 DATA BYTES
-
-
- ORG $100 BEGINS PROG @ THIS ADDR
-
- * SET PORT DATA BIT PATTERNS AND DIRECTIONS
-
- DDREX LDA #$FF
- STA DDRA PORT A ALL OUTPUTS
- STA DDRB PORT B ALL OUTPUTS
-
-
- * INITIALIZE LCD DISPLAY
-
-
- JSR LCDLY DELAY FOR DISPLAY SETUP
- LCDINIT JSR INIT INITIALIZE DISPLAY......
-
- LDA #$00 ASSURES BITS CLEAR
- STA VFO FOR LATER TESTING
-
- * INITIALIZE SCI
-
- SCIINIT LDA #%00110000 SET BAUD RATE 4800
- STA BRATE ( @ 2 MHZ XTAL)
- LDA #%01010000 SET SCCR1 TO 9 BITS
- STA SCCR1 (GIVES XTRA STOP BIT)
- LDA #%00001100 ENABLE SCI RX/TX
- STA SCCR2
-
-
-
- * COMMUNICATIONS ROUTINES
-
- CMD1 FCC 'IF;+' "INFO" REQ. COMMAND STRING
- CMD2 FCC 'FB;+' VFO "B" FREQ REQ.
- CMD3 FCC 'FA;+' VFO "A" FREQ REQ.
- GETREDY CLRX
- SEND LDA CMD1,X SEND INFO REQUEST
- CMP #'+ END OF CMD STRING?
- BEQ SETSTRT THEN GET RESPONSE
-
- SENDATA BRCLR 7,SCSR,SENDATA
- STA SCDAT
- INCX
- BRA SEND
-
-
- SETSTRT CLRX
- GETDATA BRCLR 5,SCSR,GETDATA RDRF=1?
- LDA SCDAT OK, GET DATA.
- CMP #'I CKS FOR PROPER
- BEQ GOODATA 1ST CHAR. OF STRG
- BRA GETDATA
- AGAIN BRCLR 5,SCSR,AGAIN
- LDA SCDAT
- GOODATA STA RDATA,X
- CPX #37
- BEQ SWITCH
- INCX
- BRA AGAIN
-
- SWITCH LDX #32
- LDA RDATA,X
- CMP #'0
- BEQ JUMP
- BRCLR 5,VFO,IFEMPTY
- JMP CON LOADS VFO BYTE IF
- IFEMPTY LDX #30 SPLIT IS ON WHEN
- LDA RDATA,X RADIO TURNED ON
- STA VFO
- CON JMP CONTIN
- JUMP JMP DISPLAY
-
- CONTIN LDX #30
- LDA RDATA,X
- CMP #'0
- BEQ FB REQUESTS B IF OP FREQ=A
-
- CLRX
- SEND2 LDA CMD3,X REQUESTS "A"
- CMP #'+
- BEQ BEGIN
- SENDATA2 BRCLR 7,SCSR,SENDATA2
- STA SCDAT
- INCX
- BRA SEND2
-
- FB CLRX
- SEND3 LDA CMD2,X REQUESTS "B"
- CMP #'+
- BEQ BEGIN
- SENDATA3 BRCLR 7,SCSR,SENDATA3
- STA SCDAT
- INCX
- BRA SEND3
-
- BEGIN CLRX
- DATAGET BRCLR 5,SCSR,DATAGET NEW OP FREQ
- LDA SCDAT DISP. ROUTINE
- STA RDATB,X
- CPX #13
- BEQ SWAP
- INCX
- BRA DATAGET
-
- SWAP LDX #30
- LDA RDATA,X
- CMP VFO
- BEQ DISPLAY2 IF VFO UNCHANGED,
- LDA #$C5 PRINT SAME LOC LCD;
- JSR WCTRL OTHERWISE, SWITCH
- JMP BOT LOCATIONS
-
- DISPLAY2 LDA #$85
- JSR WCTRL
- BOT LDX #5
- LDA RDATA,X
- CMP #'0
- BEQ BLANK
- JSR DISLET
- LOOP INCX
- CPX #10
- BEQ LAST
- LDA RDATA,X
- JSR DISLET
- BRA LOOP
-
- BLANK LDA #' '
- JSR DISLET
- BRA LOOP
-
- LAST LDA #'.
- JSR DISLET
- LDA RDATA,X
- JSR DISLET
- LDA #'<
- JSR DISLET
-
- LDX #30
- LDA RDATA,X
- CMP VFO
- BEQ DISFB IF VFO NO CHANGE,
- LDA #$85 PRINT @ SAME SPOT;
- JSR WCTRL OTHERWISE, SWITCH
- JMP TOP
-
- DISFB LDA #$C5
- JSR WCTRL
- TOP LDX #5
- LDA RDATB,X
- CMP #'0
- BEQ BLANK2
- JSR DISLET
- LOOP2 INCX
- CPX #10
- BEQ LAST2
- LDA RDATB,X
- JSR DISLET
- BRA LOOP2
-
- BLANK2 LDA #' '
- JSR DISLET
- BRA LOOP2
-
- LAST2 LDA #'.
- JSR DISLET
- LDA RDATB,X
- JSR DISLET
- LDA #' '
- JSR DISLET
- JMP MODE
-
-
- *****************************
- * SUBROUTINES *
- *****************************
-
- DISPLAY LDX #5
- PRINT LDA #$85
- JSR WCTRL ROUTINE CHECKS FOR
- LDA RDATA,X ONE OR TWO-DIGIT
- CMP #'0 MHZ, THEN PRINTS
- BEQ PRINT2 FREQUENCY
- LDA RDATA,X
- JSR DISLET
- INCX
- LDA RDATA,X
- JSR DISLET
- LDA #'.
- JSR DISLET
-
- PRINTLP INCX
- CPX #10
- BEQ MODE
- LDA RDATA,X
- JSR DISLET
- BRA PRINTLP
-
-
- PRINT2 LDA #' ' ERASES LEADING ZERO
- JSR DISLET
- INCX
- LDA RDATA,X
- JSR DISLET
- LDA #'.
- JSR DISLET
- PRINTLP2 INCX
- CPX #10
- BEQ MODE
- LDA RDATA,X
- JSR DISLET
- BRA PRINTLP2
-
- MODE LDA #$C0
- JSR WCTRL
- LDX #29
- LDA RDATA,X
- CMP #'1 MODE DETECTION
- BEQ LSB
- CMP #'2 AND DISPLAY
- BEQ USB
- CMP #'3
- BEQ CW
- CMP #'4
- BEQ FM
- CMP #'5
- BEQ AM
- CMP #'7
- BEQ CWN
-
- LSB LDA #'L
- JSR DISLET
- LDA #'S
- JSR DISLET
- LDA #'B
- JSR DISLET
- JMP RIT
-
- USB LDA #'U
- JSR DISLET
- LDA #'S
- JSR DISLET
- LDA #'B
- JSR DISLET
- JMP RIT
-
- CW LDA #'C
- JSR DISLET
- LDA #'W
- JSR DISLET
- LDA #' '
- JSR DISLET
- JMP RIT
-
- FM LDA #'F
- JSR DISLET
- LDA #'M
- JSR DISLET
- LDA #' '
- JSR DISLET
- JMP RIT
-
- AM LDA #'A
- JSR DISLET
- LDA #'M
- JSR DISLET
- LDA #' '
- JSR DISLET
- JMP RIT
-
- CWN LDA #'C
- JSR DISLET
- LDA #'W
- JSR DISLET
- LDA #'N
- JSR DISLET
- JMP RIT
-
- RIT LDA #$8D DISPLAYS "RIT" IF ON
- JSR WCTRL
- LDX #23
- LDA RDATA,X
- CMP #'0
- BEQ RETPROG TO RETURN TO MAIN STREAM
- LDA #'R AND TURN OFF RIT DISPLAY
- JSR DISLET
- LDA #'I
- JSR DISLET
- LDA #'T
- JSR DISLET
- JMP SPLIT
-
- RETPROG LDA #' ' TURNS OFF RIT DISPLAY
- JSR DISLET
- LDA #' '
- JSR DISLET
- LDA #' '
- JSR DISLET
-
- SPLIT LDA #$80
- JSR WCTRL
- LDX #32
- LDA RDATA,X
- CMP #'0
- BEQ SPLITOFF
- LDA #'S
- JSR DISLET
- LDA #'P
- JSR DISLET
- LDA #'L
- JSR DISLET
- LDA #'T
- JSR DISLET
- JMP GETREDY
-
- SPLITOFF LDA #' ' TURNS IT OFF
- JSR DISLET
- LDA #' '
- JSR DISLET
- LDA #' '
- JSR DISLET
- LDA #' '
- JSR DISLET
- LDA #$C5
- JSR WCTRL
- LDX #8
- BLANKSPLT LDA #' '
- JSR DISLET
- DECX
- BNE BLANKSPLT
- LDA #$8B
- JSR WCTRL
- LDA #' '
- JSR DISLET
- LDA #' '
- JSR DISLET
-
- LDX #30 LOADS VFO BYTE
- LDA RDATA,X
- STA VFO
-
- JMP GETREDY
-
- WCTRL STX TEMPX SAVE X
- STA PORTB WRITE CONTROL WORD TO BUS
- BCLR 1,PORTA SET R/W TO WRITE
- BCLR 2,PORTA SET RS TO CONTROL
- BSET 0,PORTA ENABLE ON
- BCLR 0,PORTA ENABLE OFF
- LDX #$07 ]
- DELAY2 DECX ] DELAY
- BNE DELAY2 ] FOR
- CMP #$02 ] CONTROL
- BHI DELAY4 ] (42uS)
-
- DELAY3 DECX XTRA DELAY, FOR CMDS 1&2
- BNE DELAY3 (1.644 mS)
- LDX #$12
- MORE DECX
- BNE MORE
- DELAY4 LDX TEMPX RESTORE INDEX REGISTER
- ENDCTRL RTS RETURN FROM SUBROUTINE
-
-
-
- DISLET STX TEMPX SAVE INDEX REGISTER
- STA PORTB PUT CHARACTER ON BUS
- BCLR 1,PORTA SET R/W TO WRITE
- BSET 2,PORTA SET RS TO DATA
- BSET 0,PORTA TURN ON ENABLE
- BCLR 0,PORTA ENABLE OFF
- LDX #$07 ] DELAY 42 uS
- DELAY1 DECX ] ASSUMING 1 uS
- BNE DELAY1 ] CLOCK
- LDX TEMPX RESTORE INDEX REGISTER
- RTS RETURN FROM SUBROUTINE
-
-
- INIT LDA #$38 SET 8-BIT, 2-LN, 5X7
- JSR WCTRL
- LDA #$1 CLEAR DSPLY, ADR CNTR
- JSR WCTRL TO ZERO
- LDA #$C DSPLY ON, CSR OFF
- JSR WCTRL
- LDA #$6 ENTRY MODE, SHIFTS CSR
- JSR WCTRL TO RIGHT ON WRITES
- RTS RETURN FROM SUBROUTINE
-
-
- DLY50 STA TEMPA |
- LDA #32 |
- OUTRLP CLRX |
-
- INLP DECX |
- BNE INLP |
- DECA |
- BNE OUTRLP |
- LDA TEMPA |
- RTS
-
- LCDLY STX TEMPX SAVE X
-
- LDA #15 : (DELAY UNTIL LCD READY)
- OUTLP CLRX : X USED AS INNER LOOP
- INNERLP DECX : COUNTER...
- BNE INNERLP : 6CYC*256*1uS=1.536ms
- DECA
- BNE OUTLP : 15*1.536ms=23.04ms DLY
- LDX TEMPX RESTORE X
- RTS RETURN FROM SUBROUTINE
-
-
-
- ORG $1FFE PROVIDING RESET VECTOR
- FDB DDREX WITH THESE TWO LINES...
-